﻿@model Task

@{
    ApproveProcess appPrc = ViewBag.AppPrc;
    IEnumerable<Employee> emps = ViewBag.emps;
    Employee currentApproverEmployee = ViewBag.currentApproverEmployee;
    IEnumerable<TaskHistory> ths = ViewBag.ths;
    GERPContext context = ViewBag.context;
    TaskHistory lastestTh = ViewBag.lastestTh;
}
<h4 class="header bigger lighter blue">รายละเอียดคำขอ</h4>
<div class="widget-main form-horizontal">
    <div class="control-group">
        <div class="control-label">
            รหัสคำขอ
        </div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @Html.DisplayFor(model => model.Code)
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">
            รหัสอ้างอิงที่เกี่ยวข้อง
        </div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @Html.DisplayFor(model => model.RefCode)
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">
            ชื่อเรื่อง
        </div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            <b>
                <span class="text-warning">
                    @(appPrc != null ? appPrc.Name + ":" : "")
                </span>
                @Model.Title
            </b>
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">รายละเอียด</div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @Html.Raw(string.IsNullOrWhiteSpace(Model.Remark) ? "-" : Model.Remark.Replace("\n", "<br/>"))
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">ประเภทคำขออนุมัติ</div>
        <div class="controls-detail" style="margin-top: 5px !important;">

            @(appPrc != null ? appPrc.Name : "")
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">วงเงิน</div>
        <div class="controls-detail" style="margin-top: 5px !important;">

            @Model.Amount.ToString("#,##0.00") บาท
        </div>
    </div>
    <hr />
    <div class="control-group">
        <div class="control-label">ผู้ขอ</div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            <strong>@Html.DisplayFor(model => model.ApplyToEmployee.FullName)</strong>
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">หน่วยงาน</div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @Html.DisplayFor(model => model.ApplyToEmployee.JobSite.Name)
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">วันที่ยืนยันส่งรายการคำขอ</div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @Model.CreatedWhen.Value.ToString("วันddddที่ d MMMM yyyy เวลา HH:mm")
        </div>
    </div>
    <div class="control-group">
        <div class="control-label">สถานะของคำขอ</div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @*@(Model.Completed 
                    ? "สิ้นสุดลงแล้ว โดย " + (completerApprover != null ? completerApprover.FullName : Convert.ToString(Model.CompletedBy)) 
                    :"ดำเนินการอยู่") *@
            <span class="grey">
                @Model.StatusText
            </span>
        </div>
    </div>
    @{
        Employee executedEndByEmployee = null;
    }
    @if (Model.ApprovedBy != null && 
        (executedEndByEmployee = emps.FirstOrDefault(o => o.EmpId == Model.ApprovedBy.Value)) != null)
    {
        <div class="control-group">
            <div class="control-label">อนุมัติโดย</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @executedEndByEmployee.Position.PosNo - @executedEndByEmployee.Position.Name : @executedEndByEmployee.FullName
            </div>
        </div>
        <div class="control-group">
            <div class="control-label">เมื่อ</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @Model.ApprovedWhen.Value.ToString("วันddddที่ d MMMM yyyy เวลา HH:mm")
            </div>
        </div>
    }

    @if (Model.CanceledBy != null &&
        (executedEndByEmployee = emps.FirstOrDefault(o => o.EmpId == Model.CanceledBy.Value)) != null)
    {
        <div class="control-group">
            <div class="control-label">ยกเลิกโดย</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @executedEndByEmployee.Position.PosNo - @executedEndByEmployee.Position.Name : @executedEndByEmployee.FullName
            </div>
        </div>
        <div class="control-group">
            <div class="control-label">เมื่อ</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @Model.CanceledWhen.Value.ToString("วันddddที่ d MMMM yyyy เวลา HH:mm")
            </div>
        </div>
    }

    @if (Model.RejectedBy != null &&
        (executedEndByEmployee = emps.FirstOrDefault(o => o.EmpId == Model.RejectedBy.Value)) != null)
    {
        <div class="control-group">
            <div class="control-label">ไม่ผ่านการอนุมัติโดย</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @executedEndByEmployee.Position.PosNo - @executedEndByEmployee.Position.Name : @executedEndByEmployee.FullName
            </div>
        </div>
        <div class="control-group">
            <div class="control-label">เมื่อ</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @Model.RejectedWhen.Value.ToString("วันddddที่ d MMMM yyyy เวลา HH:mm")
            </div>
        </div>
    }

    @if (!Model.Completed)
    {
        <div class="control-group">
            <div class="control-label">ผู้พิจารณาในปัจจุบัน</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @(currentApproverEmployee != null ? currentApproverEmployee.FullName : "")
            </div>
        </div>
        <div class="control-group">
            <div class="control-label">อยู่ในขั้นตอนที่</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @Html.DisplayFor(m => m.CurrentTaskHistory.ApprovePathSimulate.SimulateStepNo)
            </div>
        </div>
    }
    @{
        var ok = false;
    }
    @if (Model.ApplyToEmpId == GimsMembership.CurrentEmpId)
    {
        ok = true;
    }
    else if (Model.CreatedBy == GimsMembership.CurrentEmpId)
    {
        ok = true;
    }
    else if (currentApproverEmployee != null && currentApproverEmployee.EmpId == GimsMembership.CurrentEmpId)
    {
        ok = true;
    }
    <div class="control-group">
        <div class="control-label">
            @if (ok)
            {@:คุณเห็นคำขอนี้เพราะ
        }
        </div>
        <div class="controls-detail" style="margin-top: 5px !important;">
            @if (currentApproverEmployee != null && currentApproverEmployee.EmpId == GimsMembership.CurrentEmpId &&
                !Model.IsInRequiringSendBack
            )
            {
                <span class="grey"><b>เป็นคำขอที่รอคุณอนุมัติ* &nbsp;&nbsp;&nbsp;</b></span>
            }

            @if (Model.CreatedBy == GimsMembership.CurrentEmpId)
            {
                <span class="brown"><b>เป็นคำขอที่คุณสร้างไว้&nbsp;&nbsp;&nbsp;</b></span>
            }

            @if (Model.CreatedBy == GimsMembership.CurrentEmpId && Model.IsInRequiringSendBack)
            {
                <span class="orange"><b>เป็นคำขอที่ถูกส่งกลับมาให้แก้ไข&nbsp;&nbsp;&nbsp;</b></span>
            }
                                    
@* คำนี้ น่าจะแสดงเฉพาะการลา และต้องไม่ตรงกับ CreatedBy เพราะไม่จำเป็นต้องแสดง *@
            @if ((Model.CreatedBy != Model.ApplyToEmpId ||
                (Model.ApproveProcess != null && Model.ApproveProcess.AppPrcGrpId == 1)) &&
                Model.ApplyToEmpId == GimsMembership.CurrentEmpId)
            {
                <span class="green">เป็นคำขอที่นำมาใช้กับคุณ</span>
            }
        </div>
    </div>

    @if (lastestTh != null && !string.IsNullOrWhiteSpace(lastestTh.Remark))
    {
        <div class="control-group">
            <div class="control-label">หมายเหตุล่าสุด</div>
            <div class="controls-detail" style="margin-top: 5px !important;">
                @lastestTh.Remark
            </div>
        </div>
    }
    <div>
        <div class="control-group">
            <div>
                <h4 class="header bigger lighter blue">รายละเอียดขั้นตอนปัจจุบัน</h4>
            </div>
            <div style="margin-top: 5px !important;">
                <table id="table2" class="table table-striped table-bordered table-hover" aria-describedby="table_info">
                    <thead>
                        <tr>
                            <th style="text-align: center; font-weight: bold;">ลำดับที่</th>
                            <th style="text-align: center; font-weight: bold;">เริ่มดำเนินการเมื่อ</th>
                            <th style="text-align: center; font-weight: bold;">โดย</th>
                            <th style="text-align: center; font-weight: bold; width:120px">ชื่อผู้อนุมัติ</th>
                            <th style="text-align: center; font-weight: bold;">ประเภทผู้อนุมัติ 
                            </th>
                            <th style="text-align: center; font-weight: bold;">สิทธิ์
                            </th>
                            <th style="text-align: center; font-weight: bold;">ดำเนินการ
                            </th>
                            <th style="text-align: center; font-weight: bold;">หมายเหตุ 
                            </th>
                            <th style="text-align: center; font-weight: bold;">บันทึกระบบ
                            </th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach (var th in ths.OrderBy(o => o.TaskHistoryId))
                        {
                            <tr>
                                <td>
                                    @if (th.TaskHistoryId == Model.CurrentTaskHistoryId)
                                    {
                                        <img src="~/Content/Images/Icon/arrow-31-512.gif" style="width: 16px; height: 16px" title="กำลังอยู่ในขั้นตอนนี้" />
                                    }
                                    <span style="font-size: 24px">
                                    @th.StepNo</span>
                                </td>
                                <td>
                                    @th.CreatedWhen.Value.ToString("d MMM yyyy HH:mm")
                                </td>
                                <td>
                                    @{
                                        var empCreatedBy = context.Employees.First(o => o.EmpId == th.CreatedBy);
@:@(empCreatedBy != null && empCreatedBy.Position != null ? empCreatedBy.Position.PosNo + " - " + empCreatedBy.Position.Name : "") - @(empCreatedBy != null ? empCreatedBy.FullName : "")
                                    }
                                </td>
                                <td>
                                    @{
                                        var emps1v = context.Employees.FirstOrDefault(o => o.PosId == th.ApproverPosId && o.RecordStatus != "D");
                                    }
                                    @(emps1v != null && emps1v.Position != null ? emps1v.Position.PosNo + " - " + emps1v.Position.Name : "") - @(emps1v != null ? emps1v.FullName : "")
                                </td>
                                <td>
                                    @*<span class="red">@th.SimId </span> -*@
                                    @switch (th.ApproverType)
                                    {
                                        case ApproverType.Position:
                                            @Html.Raw("โดยตำแหน่ง")<br />
                                            break;
                                        case ApproverType.JobSiteHead:
                                            @Html.Raw("หัวหน้าสำนัก")<br />
                                            break;
                                        case ApproverType.ExecPositionGroup:
                                            @Html.Raw("ตำแหน่งบริหาร")<br />
                                            break;
                                        case ApproverType.PositionGroup:
                                            @Html.Raw("กลุ่มตำแหน่ง")<br />
                                            break;
                                        case ApproverType.WaitRequesterSendBack:
                                            @Html.Raw("ส่งกลับมายังผู้ขอให้แก้ไข")<br />
                                            break;
                                    }
                                </td>
                                <td>
                                    @if (th.IsApproveAble)
                                    {
                                        @:อนุมัติ
                                    }
                                    @if (th.IsForwardable)
                                    {
                                        @:ส่งต่อ
                                    }
                                    @if (th.IsRejectable)
                                    {
                                        @:ไม่ผ่านการอนุมัติ
                                    }
                                    @if (th.IsSendBackable)
                                    {
                                        @:ส่งกลับให้แก้ไข
                                    }
                                    @if (th.IsInRequiringSendBack)
                                    {
                                        @:ส่งคืนให้พิจารณาต่อ
                                    }
                                </td>
                                <td>
                                    @if (th.ApprovedWhen.HasValue)
                                    {
                                        @:<span class="text-success">อนุมัติ</span> เมื่อ @th.ApprovedWhen.Value.ToString("d MMM yyyy HH:mm")
                                    }
                                    else if (th.RejectedWhen.HasValue)
                                    {
                                        @:<span class="red">ไม่ผ่านการอนุมัติ</span> เมื่อ @th.RejectedWhen.Value.ToString("d MMM yyyy HH:mm")
                                    }
                                    else if (th.CanceledWhen.HasValue)
                                    {
                                        @:<span class="red">ยกเลิก</span> เมื่อ @th.CanceledWhen.Value.ToString("d MMM yyyy HH:mm")
                                    }
                                    else if (th.SendBackWhen.HasValue)
                                    {
                                        @:<span class="text-info">ส่งกลับให้แก้ไข</span> เมื่อ @th.SendBackWhen.Value.ToString("d MMM yyyy HH:mm")
                                    }
                                    else if (th.ForwardWhen.HasValue)
                                    {
                                        @:<span class="text-info">ส่งต่อ</span> เมื่อ @th.ForwardWhen.Value.ToString("d MMM yyyy HH:mm")
                                    }
                                    else if (th.SendBackOkWhen.HasValue)
                                    {
                                        @:<span class="text-info">ส่งคืนให้พิจารณาต่อ</span> เมื่อ @th.SendBackOkWhen.Value.ToString("d MMM yyyy HH:mm") 
                                    }
                                    else
                                    {
                                        <span class="text-warning">รอดำเนินการ</span>
                                    }
                                </td>
                                <td>
                                    @th.Remark
                                </td>
                                <td>
                                    @th.SystemRemark
                                </td>
                            </tr>
                        }
                        @if (Model.Completed)
                        {
                            <tr>
                                <td colspan="10">
                                    <img src="~/Content/Images/Icon/arrow-31-512.gif" width="16px" height="16px" title="กำลังอยู่ในขั้นตอนนี้" />
                                     สิ้นสุดคำขอ (
                                    @if (Model.ApprovedWhen.HasValue)
                                    {
                                        @:<span class="text-success">@Model.StatusText</span>
                                    }
                                    else if (Model.RejectedWhen.HasValue)
                                    {
                                        @:<span class="red">@Model.StatusText</span>
                                    }
                                    else if (Model.CanceledWhen.HasValue)
                                    {
                                        @:<span class="red">@Model.StatusText</span>
                                    }
                                    else
                                    {
                                        <span class="text-warning">@Model.StatusText</span>
                                    })
                                </td>
                            </tr> 
                        }
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    
    
</div>